package com.mixsmart.core.service;

import java.util.HashMap;

import com.mixsmart.core.bean.MixResponse;
import com.mixsmart.core.search.filter.SearchFilter;

/**
 * 按资源查询服务--接口类
 * <p>定义了通过资源名称获取数据的方法；
 * 资源名称为在xml文件里面定义的SQL语句名称。</p>
 * @author lmq 2016年1月15日
 * @version 1.0
 * @since JDK版本大于等于1.6
 * 
 */
public interface IResQueryService {

	/**
	 * 通过资源名称获取数据
	 * @param resName 资源名称
	 * @param params 参数
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public MixResponse<Object> getDatas(String resName, HashMap<String, Object> params);
	
	/**
	 * 通过资源名称获取数据
	 * @param resName 资源名称
	 * @param params 参数
	 * @param clazz 对象类
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public <E> MixResponse<E> getDatas(String resName, HashMap<String, Object> params, Class<?> clazz);
	
	/**
	 * 通过资源名称获取数据(分页查询)
	 * @param resName 资源名称
	 * @param params 参数
	 * @param pageNo 页面
	 * @param pageSize 每页显示数
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public MixResponse<Object> getDatas(String resName, HashMap<String, Object> params, int pageNo, int pageSize);
	
	/**
	 * 通过资源名称获取数据(分页查询)
	 * @param resName 资源名称
	 * @param params 参数
	 * @param pageNo 页面
	 * @param pageSize 每页显示数
	 * @param clazz 对象类
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public <E> MixResponse<E> getDatas(String resName, HashMap<String, Object> params, int pageNo, int pageSize, Class<?> clazz);
	
	/**
	 * 通过资源名称获取数据
	 * @param resName 资源名称
	 * @param searchFilter 搜索过滤对象
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public MixResponse<Object> getDatas(String resName, SearchFilter searchFilter);
	
	/**
	 * 通过资源名称获取数据(分页查询)
	 * @param resName 资源名称
	 * @param searchFilter 搜索过滤对象
	 * @param pageNo 页面
	 * @param pageSize 每页显示数
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getDatas()方法获取数据
	 */
	public MixResponse<Object> getDatas(String resName, SearchFilter searchFilter, int pageNo, int pageSize);
	
	/**
	 * 通过资源名称--统计
	 * @param resName 资源名称
	 * @param params 参数
	 * @return 返回MixResponse对象<br />
	 * 通过getResult()方法判断方法是否执行成功 <br />
	 * 等于“1”--表示成功，其他值表示失败< br/>
	 * 如果成功通过getData()方法获取数据
	 */
	public MixResponse<Long> count(String resName, HashMap<String,Object> params);
	
}
